package br.unisal.view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.WindowConstants;

import br.unisal.domain.Entregador;
import br.unisal.domain.Pedido;
import br.unisal.repository.EntregadorRepository;
import br.unisal.repository.PedidoRepository;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class MenuGerenciaPedido extends javax.swing.JFrame {

	private static final long serialVersionUID = 1L;
	private JButton botaoVoltar;
	private JLabel labelPedidoParaSerFechado;
	private JLabel labelEscolherMotoboy;
	private JTextArea areaDeTextoParamenssagens;
	private JTextField textFieldPedidoParaFechar;
	private JLabel labelPedidoEscolhidoParaFechar;
	private JComboBox<Pedido> comboBoxFecharPedido;
	private JLabel labelPedidosParaEntregar;
	private JButton botaoRegistraVoltaEntregador;
	private JComboBox<Entregador> comboBoxEntregadores;
	private JButton botaoDespachaPedido;
	private JTextField campoTextoPedidoSelecionado;
	private JLabel labelPedidoSelecionado;
	private JComboBox<Pedido> comboBoxPedidosAtivos;
	
	private PedidoRepository pedidoRepository;
	private EntregadorRepository entregadorRepository;
	
	private Pedido pedidoSelecionadoParaEnvio;
	private Pedido pedidoSelecionadoParaFechar;
	private Entregador entregadorSelecionado;
	
	public MenuGerenciaPedido() {
		super();
		initGUI();
	}
	
	private void initGUI() {

		pedidoRepository = JanelaPrincipal.getPedidoRepository();
		entregadorRepository = JanelaPrincipal.getEntregadorRepository();
		
		try {
			GroupLayout thisLayout = new GroupLayout((JComponent)getContentPane());
			getContentPane().setLayout(thisLayout);
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				botaoVoltar = new JButton();
				botaoVoltar.setText("Voltar");
				botaoVoltar.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent e) {
						dispose();				
					}
				});
			}
			{
				areaDeTextoParamenssagens = new JTextArea();
			}
			{
				labelPedidosParaEntregar = new JLabel();
				labelPedidosParaEntregar.setText("Pedidos para serem entregues");
			}
			{
				labelEscolherMotoboy = new JLabel();
				labelEscolherMotoboy.setText("Escolher Entregador");
			}
			{
				labelPedidoParaSerFechado = new JLabel();
				labelPedidoParaSerFechado.setText("Pedido a ser Encerrado");
			}
			{
				Pedido[] pedidos3 = pedidoRepository.retornaPedidosParaFecharEmArray();
				ComboBoxModel<Pedido> comboBoxFecharPedidoModel = 
						new DefaultComboBoxModel<Pedido>(pedidos3);
				
				comboBoxFecharPedido = new JComboBox<Pedido>();
				comboBoxFecharPedido.setModel(comboBoxFecharPedidoModel);
				comboBoxFecharPedido.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent e) {
						pedidoSelecionadoParaFechar = (Pedido) comboBoxFecharPedido.getSelectedItem();
						textFieldPedidoParaFechar.setText(String.valueOf(pedidoSelecionadoParaFechar.getCodigo()));
					}
				});
			}
			{
				labelPedidoEscolhidoParaFechar = new JLabel();
				labelPedidoEscolhidoParaFechar.setText("Pedido selecionado");
			}
			{
				textFieldPedidoParaFechar = new JTextField();
				textFieldPedidoParaFechar.setEditable(false);
			}
			{
				botaoRegistraVoltaEntregador = new JButton();
				botaoRegistraVoltaEntregador.setText("Fecha Pedido");
				botaoRegistraVoltaEntregador.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent e) {
						areaDeTextoParamenssagens.append(null);
						if ( pedidoSelecionadoParaFechar != null){
							areaDeTextoParamenssagens.setText("");
							areaDeTextoParamenssagens.append("Pedido Fechado\n");
							pedidoRepository.desativaPedidoQuandoEntregadorRetorna(pedidoSelecionadoParaFechar.getCodigo());
						} else {
							areaDeTextoParamenssagens.append("Pedido para Fechar nao selecionado\n");
						}
					}
				});
			}
			{
				botaoDespachaPedido = new JButton();
				botaoDespachaPedido.setText("Despachar Pedido");
				botaoDespachaPedido.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent e) {
						areaDeTextoParamenssagens.append(null);
						if (pedidoSelecionadoParaEnvio != null && entregadorSelecionado != null) {
							pedidoRepository.alteraPedidoEntregador(pedidoSelecionadoParaEnvio.getCodigo(),entregadorSelecionado);
							areaDeTextoParamenssagens.setText("");
							areaDeTextoParamenssagens.append("Pedido enviado\n");
						} else {
							if (pedidoSelecionadoParaEnvio == null)
							    areaDeTextoParamenssagens.append("Pedido para envio nao selecionado\n");
							else
								areaDeTextoParamenssagens.append("Entregador nao selecionado\n");
						}
					}
				});
			}
			{
				Entregador[] entregadores = entregadorRepository.retornaEntregadoresEmArray();
				ComboBoxModel<Entregador> comboBoxEntregadoresModel = 
						new DefaultComboBoxModel<Entregador>(entregadores);
				comboBoxEntregadores = new JComboBox<Entregador>();
				comboBoxEntregadores.setModel(comboBoxEntregadoresModel);
				comboBoxEntregadores.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent arg0) {
						entregadorSelecionado = (Entregador) comboBoxEntregadores.getSelectedItem();
					}
				});
			}
			{
				labelPedidoSelecionado = new JLabel();
				labelPedidoSelecionado.setText("Pedido Selecionado");
			}
			{
				campoTextoPedidoSelecionado = new JTextField();
				campoTextoPedidoSelecionado.setEditable(false);
			}
			{				
				Pedido[] pedidos2 = pedidoRepository.retornaPedidosParaEnviarEmArray();
				ComboBoxModel<Pedido> comboBoxPedidosAtivosModel = 
						new DefaultComboBoxModel<Pedido>(pedidos2);
				
				comboBoxPedidosAtivos = new JComboBox<Pedido>();
				comboBoxPedidosAtivos.setModel(comboBoxPedidosAtivosModel);
				comboBoxPedidosAtivos.addActionListener(new ActionListener() {
					
					@Override
					public void actionPerformed(ActionEvent arg0) {
						pedidoSelecionadoParaEnvio = (Pedido) comboBoxPedidosAtivos.getSelectedItem();
						campoTextoPedidoSelecionado.setText(String.valueOf(pedidoSelecionadoParaEnvio.getCodigo()));			
					}
				});
			}
			thisLayout.setVerticalGroup(thisLayout.createSequentialGroup()
				.addContainerGap(22, 22)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(labelPedidosParaEntregar, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(labelEscolherMotoboy, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(comboBoxEntregadores, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(comboBoxPedidosAtivos, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(campoTextoPedidoSelecionado, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(labelPedidoSelecionado, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
				.addComponent(botaoDespachaPedido, GroupLayout.PREFERRED_SIZE, 28, GroupLayout.PREFERRED_SIZE)
				.addGap(19)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(labelPedidoParaSerFechado, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(labelPedidoEscolhidoParaFechar, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(comboBoxFecharPedido, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(textFieldPedidoParaFechar, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
				.addComponent(botaoRegistraVoltaEntregador, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				.addGap(23)
				.addComponent(botaoVoltar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
				.addComponent(areaDeTextoParamenssagens, GroupLayout.PREFERRED_SIZE, 88, GroupLayout.PREFERRED_SIZE)
				.addContainerGap(17, Short.MAX_VALUE));
			thisLayout.setHorizontalGroup(thisLayout.createSequentialGroup()
				.addContainerGap()
				.addGroup(thisLayout.createParallelGroup()
				    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				        .addComponent(comboBoxPedidosAtivos, GroupLayout.PREFERRED_SIZE, 238, GroupLayout.PREFERRED_SIZE)
				        .addGap(0, 169, Short.MAX_VALUE))
				    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				        .addComponent(labelPedidosParaEntregar, GroupLayout.PREFERRED_SIZE, 239, GroupLayout.PREFERRED_SIZE)
				        .addGap(0, 168, Short.MAX_VALUE))
				    .addGroup(thisLayout.createSequentialGroup()
				        .addPreferredGap(comboBoxPedidosAtivos, labelPedidoSelecionado, LayoutStyle.ComponentPlacement.INDENT)
				        .addGroup(thisLayout.createParallelGroup()
				            .addGroup(thisLayout.createSequentialGroup()
				                .addGroup(thisLayout.createParallelGroup()
				                    .addComponent(labelPedidoSelecionado, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 159, GroupLayout.PREFERRED_SIZE)
				                    .addComponent(botaoDespachaPedido, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 159, GroupLayout.PREFERRED_SIZE))
				                .addGap(8)
				                .addGroup(thisLayout.createParallelGroup()
				                    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                        .addComponent(botaoVoltar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				                        .addGap(18))
				                    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                        .addPreferredGap(botaoVoltar, campoTextoPedidoSelecionado, LayoutStyle.ComponentPlacement.INDENT)
				                        .addComponent(campoTextoPedidoSelecionado, GroupLayout.PREFERRED_SIZE, 51, GroupLayout.PREFERRED_SIZE)))
				                .addGap(9)
				                .addGroup(thisLayout.createParallelGroup()
				                    .addComponent(labelPedidoEscolhidoParaFechar, GroupLayout.Alignment.LEADING, 0, 156, Short.MAX_VALUE)
				                    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                        .addComponent(comboBoxEntregadores, GroupLayout.PREFERRED_SIZE, 143, GroupLayout.PREFERRED_SIZE)
				                        .addGap(0, 13, Short.MAX_VALUE))
				                    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                        .addComponent(labelEscolherMotoboy, GroupLayout.PREFERRED_SIZE, 147, GroupLayout.PREFERRED_SIZE)
				                        .addGap(0, 9, Short.MAX_VALUE))))
				            .addGroup(thisLayout.createSequentialGroup()
				                .addPreferredGap(labelPedidoSelecionado, comboBoxFecharPedido, LayoutStyle.ComponentPlacement.INDENT)
				                .addGroup(thisLayout.createParallelGroup()
				                    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                        .addComponent(comboBoxFecharPedido, GroupLayout.PREFERRED_SIZE, 216, GroupLayout.PREFERRED_SIZE)
				                        .addGap(0, 130, Short.MAX_VALUE))
				                    .addGroup(thisLayout.createSequentialGroup()
				                        .addPreferredGap(comboBoxFecharPedido, labelPedidoParaSerFechado, LayoutStyle.ComponentPlacement.INDENT)
				                        .addGroup(thisLayout.createParallelGroup()
				                            .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                                .addComponent(labelPedidoParaSerFechado, GroupLayout.PREFERRED_SIZE, 191, GroupLayout.PREFERRED_SIZE)
				                                .addGap(0, 143, Short.MAX_VALUE))
				                            .addGroup(thisLayout.createSequentialGroup()
				                                .addPreferredGap(labelPedidoParaSerFechado, areaDeTextoParamenssagens, LayoutStyle.ComponentPlacement.INDENT)
				                                .addGroup(thisLayout.createParallelGroup()
				                                    .addGroup(thisLayout.createSequentialGroup()
				                                        .addComponent(areaDeTextoParamenssagens, GroupLayout.PREFERRED_SIZE, 322, GroupLayout.PREFERRED_SIZE)
				                                        .addGap(0, 0, Short.MAX_VALUE))
				                                    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				                                        .addGap(99)
				                                        .addComponent(botaoRegistraVoltaEntregador, GroupLayout.PREFERRED_SIZE, 123, GroupLayout.PREFERRED_SIZE)
				                                        .addGap(26)
				                                        .addComponent(textFieldPedidoParaFechar, GroupLayout.PREFERRED_SIZE, 52, GroupLayout.PREFERRED_SIZE)
				                                        .addGap(0, 22, Short.MAX_VALUE)))))))
				                .addGap(37)))))
				.addContainerGap(30, 30));
			pack();
			this.setSize(465, 435);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}

}
